class LibrosController < ApplicationController
  verify  :method => :post, 
          :only => [ :insertar, :actualizar, :comentar ],
          :redirect_to => { :action => :listar }
          
  before_filter :validar_admin, :only => [ :listar_admin, :nuevo, :insertar, :editar, :actualizar, :ordenar, :borrar ]
  before_filter :cargar_libro, :only => [ :ficha, :editar, :actualizar, :borrar, :comentar, :imposible_borrar ]
  
    
  def listar
    @libros = Libro.find( :all, :order => 'orden asc' )
  end
  
  def feed
    @libros = Libro.find( :all, :order => 'orden asc' )
    render :template => 'libros/feed.rss.builder', :layout => false
  end
  
  def listar_admin
    @libros = Libro.find( :all, :order => 'orden asc' )
  end
  
  def nuevo
    @libro = Libro.new
    @libro.texto = <<-eos
<h3>Ficha</h3>
TITULO <br />
de AUTOR.<br />
DESCRIPCIÓN<br />
ISBN:<br />
1ª edición:<br />
formato:<br />
XX páginas con ilustraciones en color.<br />
XX €

<h3>El libro</h3>


<h3>El autor</h3>
eos

  end
  
  def insertar
    @libro = Libro.new( params[:libro] )
    @libro.actualizar_imagenes( params["imagenes_ids"] )
    
    if @libro.save
      flash[:info] = 'Libro creado muy bien... suerte a ver si gusta.'
      redirect_to libros_ficha_url( @libro.titulo_sanitizado )
    else
      flash[:error] = 'Algún error se ha producido, vuelve a intentarlo.'
      render :action => 'nuevo'
    end
  end
  
  def editar
    @libro = Libro.find_by_titulo_sanitizado( params[:titulo_sanitizado] )
  end
    
  def actualizar
    @libro.update_attributes( params[:libro] )
    @libro.actualizar_imagenes( params["imagenes_ids"] )
    
    if @libro.save
      flash[:info] = 'Libro actualizado muy bien.'
      redirect_to libros_ficha_url( @libro.titulo_sanitizado )
    else
      flash[:error] = 'Algún error se ha producido, vuelve a intentarlo.'
      render :action => 'editar'
    end
  end
  
  def borrar    
    if( @libro.usado_por_algun_pedido? )
      flash[:error] = "Este libro no se puede borrar porque está metido en alguno de los pedidos existentes."
      redirect_to admin_libros_imposible_borrar_url( @libro.titulo_sanitizado )
    else
      
      if @libro.destroy
        flash[:info] = 'Libro borrado muy bien.'
      else
        flash[:error] = 'Algún error se ha producido, vuelve a intentarlo.'
      end
      
      redirect_to admin_libros_listar_url
    end    
    
  end
  
  def ficha
  end
  
  def comentar
    comentario = Comment.new(params[:comentario])
    @libro.add_comment comentario
    if comentario.save
      Cartero.deliver_nuevo_comentario_en_libro( comentario, @libro )

      # flash[:notice] = "Comentario añadido con éxito"
      render :partial => 'comentarios/comentario', :locals => { :comment => comentario, :ajax => true }
    else
      # flash[:error] = 'Algún error se ha producido, vuelve a intentarlo.'
      render :partial => 'comentarios/comentario_error', :locals => { :comment => comentario, :ajax => true }
    end
  end
  
  def ordenar
    params["orden"].each_with_index do |id, index|
      libro = Libro.find_by_id( id );
      libro.orden = (index+1) * 10
      libro.save
    end
    
    flash[:info] = "El orden se ha actualizado correctamente"
    redirect_to admin_libros_listar_url
  end
  
  def imposible_borrar
  end
  
  protected
    def menu_activado
      @menu_activado = 'libros'
    end
    
    def cargar_libro
      if es_admin?
        @libro = Libro.find_by_titulo_sanitizado( params[:titulo_sanitizado] )
      else
        @libro = Libro.find_by_titulo_sanitizado( params[:titulo_sanitizado], :conditions => "estado != '#{Libro::BORRADO}'" )
      end
      
      if not @libro
        render_404
      end
    end
end